The invention herein involves computer systems. A computer system normally includes a central processing unit (CPU), a permanent memory unit, a fast memory unit, input and/or output (I/O) units, storage units, and a user interface. Programs contained in the memory, control the operation of the CPU to operate the computer. Whenever the computer is started, the CPU is initially controlled by a small program contained in the permanent memory. This startup program loads an operating system and any other necessary programs and data from files in the storage units into the fast memory. The CPU is able to alter any data contained in fast memory and control the I/O units to transfer data between the fast memory and peripherals such as the storage units, printers and user interface components. During operation, all or parts of data files are loaded into the fast memory. The contents of the data files are then changed, and the new versions of the data files are saved back into storage.
Memory generally refers to electronic information storage. When discussing memory or storage, both programs and data files are referred to collectively as either "data" or "information". There are two main type of memory: read only memory (ROM) and random access memory (RAM). RAM tends to be much faster than ROM, but also tends to be highly volatile, meaning that it must be regularly written to in order to prevent data loss. ROM, on the other hand, is permanent, so that any data stored in ROM is available when the computer is first turned on.
There are many different types of ROM. Some kinds of ROM are created with an unchangeable program built in. Programmable ROM (PROM), on the other hand, can be written to, but this usually requires high voltage, and may be difficult to erase (requiring, for example, ultraviolet light). Permanent memory may also be rewrittable memory such as electrically erasable ROM (EEPROM), battery backed SRAM, or flash memory.
Faster, more volatile types of memory are known as random access memory (RAM). Types of RAM include static RAM (SRAM), in which data is stored using circuits with several transistors, and dynamic RAM (DRAM), in which information is stored as charges in capacitors. The capacitors of DRAM must be regularly recharged to prevent data loss. The data stored in fast memory is usually lost when the system is turned off. Random access refers to the fact that any word i.e. 2 or 4 bytes (1 byte equals 8 bits of data), of the memory can be arbitrarily selected and immediately read or written to in one operation at any time without reading through the rest of memory. Note that permanent memory (ROM) is also random memory in this sense.
ROM is normally built into a motherboard of the computer. Fast memory is commonly provided on small boards that are mounted in memory slots on the motherboard of the computer. Flash memory PC cards are available that insert into PCMCIA slots commonly found in laptop computers, and small computer systems often use ROM cartridges especially for computer games.
Storage usually refers to units which contain computer media onto which the data and programs are stored. The computer media may be magnetic media in which a layer of plastic is coated with a layer of metal alloy oxide (e.g. iron rust) which is magnetic but not electrically conducting. Bits of data may be written to such magnetic media by magnetizing the particles at a storage point on the layer in a particular direction by controlling current to a magnetic write head moving closely over the point. Data may be read from magnetic media by detecting the effect of the magnetization on electrical current output from a magnetic read head. Alternately the media may be optical media in which bits may be written by directing a higher power laser beam at a point in a layer of the media to change the reflectivity of the layer at that point and read by detecting the amount of reflected light when a lower power laser is directed at the point on the layer. Some storage devices, such as hard disk drives, include a fixed media which can not be removed. In other devices, such as floppy disk drives, tape drives, and optical disk drives, the media can easily be removed and replaced by other media containing different programs or data files.
Some digital storage devices, such as hard disk drives and some types of optical disk drives, provide high speed access to any arbitrary individual block of data in the media of the device. This capability is referred to as random access. Unlike memory, no storage device allows random access to individual words (e.g. 2 or 4 bytes), but random access storage devices do allow relatively fast access to individual blocks (e.g. 512 bytes).
Other types of digital storage devices, such as digital tape drives, only allow access to blocks of data in a sequence. For example, a tape may have to be wound for hundreds of meters in order to reach a particular block of data. Thus, these types of storage devices are only useful for accessing large sequential sections of data, since random access to individual blocks is either not available or too slow for practical use. Such devices are referred to as sequential access storage. Common sequential access devices have removable media which is relatively inexpensive, allowing the storage of large amounts of data at relatively low cost.
Some storage drives are built-in or internal and require opening the computer to install or remove. Some other storage devices are external and plug into ports of the computer to be easily installed and removed. High performance systems often have hard drives installed in enclosures that slide into internally mounted frames for convenient replacement.
The unreliability of high speed, random access storage devices is a major problem in data storage. Certain mechanical parts of a storage drives, such as positioning motors and bearings, are not nearly as reliable as solid state devices. In addition, because the data on a hard disk is so easily accessible, computer viruses, software failures, and operation errors can easily damage stored data. For this reason, important data is often copied onto removable media which is removed from the system so that no failure of the system can directly damage the data. This process is referred to as backing-up the data. If there is a failure in the computer system, the data on the system storage device can then be restored by copying the backed-up data from the removable media.
Also, in order to increase reliability of hard disk storage, computer systems used for critical, changing information commonly use a system known as a redundant array of inexpensive disks (RAID). In a RAID system, instead of being stored on a single hard disk, each data file is about evenly spread out across several data disks by a RAID controller card. In addition, parity information is written to a parity disk, so that if any single disk drive fails, there will be no loss of data or access to the data. Access to the disks is cycled across the data disks by the RAID disk controller and parts of each disk file is read or written in turn to each data drive. This allows a large number of smaller inexpensive disks to operate as though they were one large disk drive. This process of spreading the data across multiple devices is known as striping. Typically in a RAID system, the disk drives are networked to a disk controller card using a small computer interface (SCSI) peripherals network. Commonly available SCSI type RAID disk controllers access up to 13 data disk drives and one parity disk drive and inexpensive SCSI disk drives holding 23 GB (gigabytes=1 billion bytes) are available thus providing up to 299 GB of highly reliable storage in one hard disk storage system (HDSS).
The cost of high speed, random access, storage devices is one of the major costs of computer systems. Because the cost of sequential access storage (including the removable media) is much lower per unit of storage than the cost of high access speed storage, it is common to move data (programs files and data files) which are not immediately needed onto removable media in sequential digital storage devices. The removable media is then removed from the drive and replaced with other media. This process of temporarily moving files from random access storage devices onto media in sequential devices, and then removing the media from the system, is known as archiving. When the data are again required, then the media is loaded into the sequential device, and the files are copied back onto the high access speed storage devices in a process known as restoring the data.
Digital tape units are especially popular for backing-up and for archiving digital data because of the extremely low cost of tape. High quality tape units which write digital data at 3 million bytes per second (10 MBs) are commonly available.
The invention also relates to computer networks. In order to reduce the cost of data processing systems, several computers can be linked using communications cables. This allows the computers to use some parts of other computers and some or all of the data stored on other computers. Such interconnected computers are referred to as computer networks. The individual computers usually referred to as nodes of the network, and the communication paths (e.g. cables) and communication equipment are referred to as a communication network. The telephone system is an example of a communications network to which computer nodes may be connected, using modems or ISDN devices, to form a computer network. Other common communication networks include Ethernet, ARCnet, and token ring networks. In a computer network, files, storage space, printers and other resources of nodes referred to as servers, can be used by other computer nodes referred to as clients.
The invention is especially useful in the cable television industry. Cable television distribution has traditionally utilized semi-automated controls. Most cable distributors receive channels from program producers through satellite downlinks, video tapes, and dedicated lines. At the cable distributor, tapes are loaded into a VCR player, which is then manually queued and started to provide a program signal. Signals from the various program sources are routed from source cables by manually controlled switchers through modulators to provide each program at a different frequency channel, and the modulated signals combined into a distribution cable. This equipment used to provide the signals into the cable television distribution system, is commonly known as the head-end. For each channel with local commercials, a cartridge for each local commercial is loaded into a cartridge tape machine, which has been automatically queued and programmed to automatically play the correct local commercials on the correct channel at a particular time. The cable distributor may simultaneously distribute over 100 channels through a cable system.
Many cable operators are preparing to introduce multi-casting into their cable systems. In multi-casting, different programs and commercials are broadcast to different parts of the cable system or to different types of viewers (i.e. viewing customers). For example, different neighborhoods may receive programs specific to its demographics and receive commercials specific to its local businesses. Preferably, the same show could be broadcast at overlapping times depending on the commercials scheduled in the different portions of the cable system. Multi-casting requires a more automated approach since a different set of operations is required for each local area, so that many more simultaneous operations are needed.
Video servers, also known as multimedia servers, are a solution to the complexity of operating a multi-casting system. A video server can easily play the same or different local commercials on several different local portions of the cable system at simultaneous or overlapping times. For example, local commercials may be loaded from tape into the disk storage of the video server, and the video server can be programmed to automatically play the correct commercial in the correct channel for each local area. Different programs can also be loaded into the video server to automatically play in different local areas at different times.
For example, Philips produced Media Pool video servers which allow a large number of video production peripheral devices to simultaneously access a large number multimedia productions. Typical video peripherals include film scanners, frame editors, digital tape archival systems, video cameras, VCR units, program distribution links, and cable distribution systems (head-ends).
Instead of being stored on a single RAID hard disk system, each data file is about evenly spread out across multiple RAID systems called hard disk storage systems (HDSSs). To give each video peripheral device access to all the data in all the HDSSs, each device is connected to one or more input-output (I/O) ports. A computer controlled switching unit called the commutator then cycles the connections between the I/O ports and the HDSSs, so that each HDSS is regularly switched from I/O port to I/O port and the I/O port are similarly switched from HDSS to HDSS. As the I/O port for a given device is cycled by the commutator across the storage systems, parts of the file are read or written in turn on each storage system. This allows a large number of peripheral devices to simultaneously have access to the same file without conflicts. This process of distributing files across all the HDSSs is referred to as striping. With HDSS striping, a tape drive can back-up a video file while the same part or another part of the same file is being used by a frame editor and also the same or other parts of the file are being broadcast to different portions of a multi-casting cable system, for example.
For each production (program or commercial), several files of multimedia data must be stored in the HDSSs of the video server. Typically, a single production requires a video file and up to four audio files. Furthermore, there may be several auxiliary files specifying additional information, including arrangement information and time code information describing how to arrange the information from the video and audio files to form a multimedia stream and when to broadcast portions of the information to play the stream.
In order to play the multimedia production, the time code, arrangement, video, and audio data must first be read from respective files stored in the HDSSs. The video and audio data is then broadcast in a predetermined order at predetermined times according to the arrangement and time code information to play the multimedia data stream.
Successful operation of current multimedia servers requires careful planning. The loading or restoration of any required multimedia productions must be completed before the scheduled broadcast time. Furthermore, there must be sufficient hard disk storage space for restoring the required productions so that other productions may have to be archived. Finally, restoration often requires other computer resources (e.g. I/O ports, tape drives, bandwidth through the commutator) which might not be available at all times.
Many cable systems offer a service known as pay-per-view in which subscribers who wish to see a special production can call a provider to order access to the production, often up to just a few minutes before the production starts. Typically, a small group of productions are repeated sequentially on a channel so that viewers who wish, may view the production at different times.
Many cable providers desire to offer an improved pay-per-view service known as near-video-on-demand, in which the same production is broadcast on multiple channels starting at staggered times, so that a viewer who desires to see a production and misses the start of the production will not have to wait through the entire length of the production before seeing the next available starting of the broadcast. In order to provide near-video-on-demand directly from tape, a multitude of copies of each production and a separate player for each channel will be required. Thus, it is economical to load such productions onto a video server which can simultaneously play different portions of the same copy of the production onto different channels.
Many cable systems are also preparing to offer a service known as video-on-demand in which a subscriber requests a particular multimedia production from hundreds or even thousands of available productions, and then the provider broadcasts the production to that viewer through the cable as quickly as it can be made available.
Preferably, in addition to play, the service should provide for viewer commands for so called trick play functions such as pause, frame-by-frame forward and reverse, slow motion forward and reverse, play in fast forward and reverse, very fast forward (wind) and reverse (rewind, and other multimedia manipulations currently provided by advanced VCR machines. Furthermore, the random access storage of a video server would allow providing random access viewer commands such as go to a scene or jump forward or backward a given playing time, and similar functions provided on advanced CD changers. It would be prohibitively expensive to operate such a system using a separate player and separate taped copy of a production for each potential simultaneous viewer in such a system.
Multimedia productions require large amounts of digital storage. One hour of programming of regular definition television, in motion JPEG format for instance, may require as much as 6 GB of storage, and video-on-demand customers may demand to select from thousands of hours of programming. Thus, it is not practical to store all of the desired productions in random access storage. Thus, in a video server, most productions must be kept in archival storage, so that viewers who request an archived production must wait while the production is restored from archival storage.
The invention is also related to the methods used to handle data in a video server. The restoration and archiving processes are complex and require extensive memory and processor resources. In archiving, the video server sends commands to the HDSSs requesting portions of files required for a production. The server copies the data in blocks formatted for disk storage from a network input communicating with the HDSSs into an input buffer in the server memory. The server reads the data from the input buffer, reformats the data into larger blocks for sequential storage, and writes the data into an output buffer in the server memory. The server sends commands to a sequential storage system to store the data and copies the data from the the output buffer onto an output to the sequential storage system.
In restoring, the video server sends commands to a sequential storage system requesting portions of a file required for a production. The server copies the data in blocks formatted for sequential access storage from an input from the sequential storage system into an input buffer in the server memory. The server reads the data from the input buffer, reformats the data into smaller blocks for sequential storage, and writes the data into an output buffer in the server memory. The server sends commands to the HDSSs to store the data and moves the data from the the output buffer onto an output to the HDSSs.
The recording and playing processes for multimedia productions are similarly complex and again require extensive memory and processor resources. In playing, the video server receives commands to play a multimedia production and the video server sends commands to the HDSSs requesting portions of files required for playing the production. The server copies the data in blocks formatted for disk storage from an input from the HDSSs into an input buffer in the server memory. The server reads the data from the input buffer, reformats the data into the format required for a multimedia data stream, and writes the data into an output buffer in the server memory. The server copies the data from the the output buffer onto a video output according to timing information stored in the auxiliary files.
In recording, the video server receives commands to record a multimedia data stream and the server begins copying the data from an input for the stream into an input buffer in the server memory, along with timing information related to when the data was received. The server reads the data from the input buffer reformats the data into blocks for disk storage and writes the data into an output buffer in the server memory. The server sends commands to the HDSSs to store the data and copies the data from the the second buffer onto an network output to the HDSSs.
Those skilled in the art are directed to U.S. Pat. No. 5,539,660 to Bird et al. describing a multimedia server with a cartridge tape unit. U.S. patent application Ser. No. 08/641,153, now U.S. Pat. No. 5,732,211, entitled "Advanced Data Server and Server System" describes another multimedia server. U.S. Pat. No. 5,305,438 describes a video storage system with an archival tape unit, and U.S. Pat. No. 4,949,187 describes a video server with an archival tape system. These above citations are hereby incorporated in whole by reference.